package Day12.成员方法;

/**
 * 访问修饰符（作用是控制 方法使用的范围）
 * 如果不写默认访问，有四种【public protected 默认 private】，我们具体在后面说
 * 返回数据类型
 * 1.一个方法最多有一个返回值，返回多个结果就返回数组
 * 2.返回类型可以为任意类型，包含基本类型或者引用类型（数组，对象）
 * 3.如果方法要求有返回数据类型，则方法体中最后的执行语句必须有return值，而且要求返回类型必须和return的值
 * 一致或者兼容
 * 4.如果方法是void，则方法体中可以没有return语句，或者只写return
 * 方法名
 * 遵循驼峰命名法，最好见名知意，表达出该功能的意思即可，
 */
public class Demo04 {
    public static void main(String[] args) {
        AA a=new AA();
        int [] res=a.getSumAndSub(1,4);
        System.out.println("和为"+res[0]);
        System.out.println("差为"+res[1]);
        //细节：调用参数的方法时，一定对应着参数列表传入相同的类型或者兼容类型的参数
        byte b1=1;
        byte b2=2;
        a.getSumAndSub(b1,b2);//byte->int
        //a.getSumAndSub(1.1,1.5); double->int (×)
        //细节 实参和形参的类型要一致或者兼容，个数，顺序必须一致
        //a.getSumAndSub(100); x 个数不一致
        a.f3("可乐",5);//正确的
        //a.f3(5,"可乐"); 实际参数和形式参数顺序不对
    }
}
class AA{
    //细节 方法不能嵌套定义
    public void f4(){
        //public void f5(){
        //方法不能嵌套使用
        //}
    }
    public void f3(String str,int n){

    }
    //一个方法最多只能有一个返回值，如果返回的是多个结果，返回的是什么？返回一个数组
    public int []getSumAndSub(int n1,int n2){
        int [] resArr=new int[2];
        resArr[0]=n1+n2;
        resArr[1]=n1-n2;
        return resArr;
    }
    //返回类型可以为任意类型，包含基本类型或者引用类型（数组，对象）
    //如果方法要求返回数据类型，则方法体中最后执行的语句必须是return值，
    //而且返回的值要求跟return的值一致或者兼顾
    public double f1(){
        double d1=1.1*3;
        int n=100;
        return n;
    }
    //如果方法是void，则方法体中可以没有return语句，或者 只写return
    //在实际工作中，我们的方法都是为了完成某个功能的，所以方法名要有一定的含义，最好是见名思意
    public void f2(){
        System.out.println("hello1");
        System.out.println("hello1");
        System.out.println("hello1");
        int n=10;
        //return;
    }
}
